#define _CRT_SECURE_NO_WARNINGS 1

#include<stdio.h>

#include<assert.h>

//模拟实现库函数strcpy

char* my_strcpy(char* dest,const char* src)//源头是被拷贝的，不需要改变，所以需要const修饰一下，
                                            //为了保护数组
{
	//断言
	assert(dest);
	assert(src);
	char* ret = dest;//记录目标空间的首地址，方便最后返回
	while (*src != '\0')
	{
		*dest = *src;
		dest++;
		src++;
	}
	*dest = *src;//把最后的'\0'也传入
	return ret;
}
int main()
{
	char arr1[30] = "xxxxxxxxxxxxxxxxx";//目标空间要足够大
	char arr2[] = "Hello wsx";
	my_strcpy(arr1, arr2);
	printf("%s\n", arr1);
	//printf("%s\n", my_strcpy(arr1, arr2));//链式访问
	//不一定要从头开始覆盖拷贝，也可以从中间某个字符开始，这时以这个字符作为首地址传入函数即可
		//my_strcpy(arr1 + 5, arr2);
		//my_strcpy(arr1 , arr2 + 1);
		//my_strcpy(arr1 + 5, arr2 + 1);
		//printf("%s", arr1);

	return 0;
}